//面试:羽毛球2vs2组队比赛，求多少种组合
// 某公司组织羽毛双打比赛，共有N个同学报名参加编号分别为{1， 2， 3， 4，…. N}.
// N为4的倍数. 双打队友和双打对手完全由抽签决定. 请输出所有可能的组合.
//输入：4 输出：
//{1，2}  vs  {3， 4}
//{1，3}  vs  {2， 4}
//{1，4}  vs  {2， 3}
#include <bits/stdc++.h>
using namespace std;
#define FRE(x) freopen("d:/oj/" #x ".in", "r", stdin)
#define PF(...) printf(__VA_ARGS__)
struct StudentPair {
  int a = 0;
  int b = 0;
};
//  12 34  ,   34 12
//  13 24  ,   24 13
//  14 23  ,   23 14
// 8
// 12 34 , 34 12
//
vector<pair<StudentPair, StudentPair> > getAllConbination(int num) {
  vector<int> vtNum;
  for (int i = 0; i < num; i++) vtNum.push_back(i);
  vector<StudentPair> vtPartner;
  for (int i = 0; i < num; i++) {
    for (int j = i + 1; j < num; j++) {
      vtPartner.push_back({vtNum[i], vtNum[j]});
    }
  }
  vector<pair<StudentPair, StudentPair> > vtRes;
  for (int i = 0; i < vtPartner.size(); i++) {
    int a = vtPartner[i].a;
    int b = vtPartner[i].b;
    for (int j = i + 1; j < vtPartner.size(); j++) {
      if (vtPartner[j].a == a || vtPartner[j].a == b || vtPartner[j].b == a ||
          vtPartner[j].b == b) {
        continue;
      }
      vtRes.push_back({vtPartner[i], vtPartner[j]});
    }
  }
  return vtRes;
}
void testBadmintonGame(int n) {
  vector<pair<StudentPair, StudentPair> > vtRes = getAllConbination(n);
  for (auto [pa, pb] : vtRes) {
    printf("(%d %d) vs (%d %d)\n", pa.a, pa.b, pb.a, pb.b);
  }
}